Efficient CUDA
نویسندگان
چکیده
Recent work in deep learning has created a voracious demand for more compute cycles, but with the slowdown of Moore’s law, CPUs cannot keep up with the demand. Thus, attention has turned to massively-parallel hardware accelerators, ranging from new processing units designed specifically for deep learning to the repurposing of existing technologies like Fieldprogrammable gate arrays (FPGAs) and graphics processing units (GPUs). While these accelerators can provide immense speedups over traditional CPUs in certain domains, application programmers must take great care in optimizing code. In this work, we focus on GPUs and explore how 1) memory access patterns, and 2) memory abstractions can affect the performance of massively-parallel hardware accelerators, in the context of matrix multiply. We show that by optimizing memory access patterns, we can achieve over 15× speedups and choosing the wrong memory abstractions can lead to a 40× slowdown. Thus, we show the importance of memory in programming modern GPUs.
منابع مشابه
Parallelization of Rich Models for Steganalysis of Digital Images using a CUDA-based Approach
There are several different methods to make an efficient strategy for steganalysis of digital images. A very powerful method in this area is rich model consisting of a large number of diverse sub-models in both spatial and transform domain that should be utilized. However, the extraction of a various types of features from an image is so time consuming in some steps, especially for training pha...
متن کاملAutomatic C-to-CUDA Code Generation for Affine Programs
Graphics Processing Units (GPUs) offer tremendous computational power. CUDA (Compute Unified Device Architecture) provides a multi-threaded parallel programming model, facilitating high performance implementations of general-purpose computations. However, the explicitly managed memory hierarchy and multi-level parallel view make manual development of high-performance CUDA code rather complicate...
متن کاملMCUDA: An Efficient Implementation of CUDA Kernels on Multi-cores
The CUDA programming model, which is based on an extended ANSI C language and a runtime environment, allows the programmer to specify explicitly data parallel computation. NVIDIA developed CUDA to open the architecture of their graphics accelerators to more general applications, but did not provide an efficient mapping to execute the programming model on any other architecture. This document de...
متن کاملPoint Based Color Bleeding with CUDA and Caching
The main goal of this project was to explore the possibility of applying CUDA to the Point Based Color Bleeding global illumination algorithm. This project tackled the creation of surfels, the storage of surfels in an octree, representation of an octree in CUDA, and the transversal of an octree in CUDA. Future work will include the rasterization step of the Point Based Color Bleeding algorithm ...
متن کاملAccelerating Collapsed Variational Bayesian Inference for Latent Dirichlet Allocation with Nvidia CUDA Compatible Devices
In this paper, we propose an acceleration of collapsed variational Bayesian (CVB) inference for latent Dirichlet allocation (LDA) by using Nvidia CUDA compatible devices. While LDA is an efficient Bayesian multi-topic document model, it requires complicated computations for parameter estimation in comparison with other simpler document models, e.g. probabilistic latent semantic indexing, etc. T...
متن کاملEfficient parallelization of the genetic algorithm solution of traveling salesman problem on multi-core and many-core systems
Efficient parallelization of genetic algorithms (GAs) on state-of-the-art multi-threading or many-threading platforms is a challenge due to the difficulty of schedulation of hardware resources regarding the concurrency of threads. In this paper, for resolving the problem, a novel method is proposed, which parallelizes the GA by designing three concurrent kernels, each of which running some depe...
متن کامل